import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
  imports: [
    // MySQL 配置
    TypeOrmModule.forRootAsync({
      name: 'mysql', // 数据库连接名称（用于区分多数据库）
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (configService: ConfigService) => ({
        type: 'mysql',
        host: configService.get('mysql.host'),
        port: configService.get('mysql.port'),
        username: configService.get('mysql.username'),
        password: configService.get('mysql.password'),
        database: configService.get('mysql.database'),
        entities: [__dirname + '../modules/**/entities/*.entity{.ts,.js}'], // 仅关联 MySQL 实体
        synchronize: configService.get('NODE_ENV') === 'development', // 开发环境下自动同步表结构（生产环境建议关闭）
        logging: configService.get('NODE_ENV') === 'development', // 打印 SQL 日志（开发环境用）
      }),
    }),

    // MongoDB 配置
    TypeOrmModule.forRootAsync({
      name: 'mongo', // 数据库连接名称
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (configService: ConfigService) => ({
        type: 'mongodb',
        url: `${configService.get('mongo.url')}/${configService.get('mongo.database')}`,
        entities: [__dirname + '../modules/**/mongo/*.entity{.ts,.js}'], // 仅关联 MongoDB 实体
        synchronize: configService.get('NODE_ENV') === 'development', // 开发环境下自动同步集合结构
        logging: configService.get('NODE_ENV') === 'development',
      }),
    }),
  ],
  exports: [TypeOrmModule], // 导出 TypeOrmModule，供其他模块使用
})
export class DatabaseModule {}
